package com.newly.driver.sdk.device.video.cloud.device.tencent;

import cn.hutool.core.annotation.Alias;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 * @author gjm guan
 * @date 2021/10/21 17:23
 * @desc 腾讯云查询设备响应参数
 * TotalCount	Integer	设备总数,注意：此字段可能返回 null，表示取不到有效值。
 * Devices	Array of AllDeviceInfo	设备详细信息列表,注意：此字段可能返回 null，表示取不到有效值。
 * RequestId	String	唯一请求 ID，每次请求都会返回。定位问题时需要提供该次请求的 RequestId。
 * <p>
 * Devices：
 * <p>
 * DeviceId	String	是	设备唯一标识，注意：此字段可能返回 null，表示取不到有效值。
 * DeviceType	Integer	是	设备类型；2：IPC，注意：此字段可能返回 null，表示取不到有效值。
 * Status	Integer	否	设备状态；0：设备不在线；1：设备在线；2：设备隔离中；3：设备未注册，注意：此字段可能返回 null，表示取不到有效值。
 * CreateTime	Integer	否	创建时间，注意：此字段可能返回 null，表示取不到有效值。
 * ExtraInformation	String	否	设备扩展属性，注意：此字段可能返回 null，表示取不到有效值。
 * NickName	String	否	设备名称，注意：此字段可能返回 null，表示取不到有效值。
 * GroupPath	String	否	设备绑定分组路径，注意：此字段可能返回 null，表示取不到有效值。
 * DeviceCode	String	否	设备编码，注意：此字段可能返回 null，表示取不到有效值。
 * IsRecord	Integer	否	是否存在录像,，0:不存在；1：存在，注意：此字段可能返回 null，表示取不到有效值。
 * Recordable	Integer	否	该设备是否可录制，注意：此字段可能返回 null，表示取不到有效值。
 * Protocol	String	否	设备接入协议，注意：此字段可能返回 null，表示取不到有效值。
 * GroupId	String	否	组Id，注意：此字段可能返回 null，表示取不到有效值。
 * GroupName	String	否	组名，注意：此字段可能返回 null，表示取不到有效值。
 */
@Data
public class TXQueryDeviceResp {
    /**
     * 设备总数
     */
    @ApiModelProperty("设备总数")
    @Alias("TotalCount")
    private Integer totalCount;

    /**
     * 设备详细信息列表
     */
    @ApiModelProperty("设备详细信息列表")
    @Alias("Devices")
    private List<Payload> payloads;

    /**
     * 唯一请求 ID
     */
    @ApiModelProperty("唯一请求 ID")
    @Alias("RequestId")
    private String requestId;

    /**
     * 设备详细信息列表
     */
    @Data
    public static class Payload {
        /**
         * 设备id
         */
        @ApiModelProperty("设备id")
        @Alias("DeviceId")
        private String deviceId;

        /**
         * 设备类型
         */
        @ApiModelProperty("设备类型")
        @Alias("DeviceType")
        private Long deviceType;

        /**
         * 设备状态；0：设备不在线；1：设备在线；2：设备隔离中；3：设备未注册
         */
        @ApiModelProperty("设备状态；0：设备不在线；1：设备在线；2：设备隔离中；3：设备未注册")
        @Alias("Status")
        private Long status;

        /**
         * 创建时间
         */
        @ApiModelProperty("创建时间")
        @Alias("CreateTime")
        private Long createTime;

        /**
         * 设备扩展属性
         */
        @ApiModelProperty("设备扩展属性")
        @Alias("ExtraInformation")
        private String extraInformation;

        /**
         * 设备名称
         */
        @ApiModelProperty("设备名称")
        @Alias("NickName")
        private String deviceName;

        /**
         * 设备绑定分组路径
         */
        @ApiModelProperty("设备绑定分组路径")
        @Alias("GroupPath")
        private String groupPath;

        /**
         * 设备编码，国标id
         */
        @ApiModelProperty("设备编码，国标id")
        @Alias("DeviceCode")
        private String gbId;

        /**
         * 是否存在录像,，0:不存在；1：存在
         */
        @ApiModelProperty("是否存在录像,，0:不存在；1：存在")
        @Alias("IsRecord")
        private Long isRecord;

        /**
         * 该设备是否可录制
         */
        @ApiModelProperty("该设备是否可录制")
        @Alias("Recordable")
        private Long recordable;

        /**
         * 设备接入协议
         */
        @ApiModelProperty("设备接入协议")
        @Alias("Protocol")
        private String protocol;

        /**
         * 组Id
         */
        @ApiModelProperty("组Id")
        @Alias("GroupId")
        private String groupId;

        /**
         * 组名
         */
        @ApiModelProperty("组名")
        @Alias("GroupName")
        private String groupName;
    }
}
